package it.softphone.cmc.shared.entity;

import it.softphone.commons.shared.security.User;

/**
 * 
 * @author softphone
 *
 */
public interface Account extends User, HasAttributes {

	/**
	 * 
	 * @author bsorrentino
	 *
	 */
	public interface Preference {

		Tenant getTenant();
		
		void setTenant( Tenant value );
		

		public interface ResultSet extends it.softphone.cmc.shared.entity.ResultSet<Preference> {

			java.util.List<Preference> getResult();
			
			void setResult( java.util.List<Preference> result );
			
		}
		
	}

	public interface ResultSet extends it.softphone.cmc.shared.entity.ResultSet<Account> {

		java.util.List<Account> getResult();
		
		void setResult( java.util.List<Account> result );
		
	}
	
	/**
	 * get platform dependent id
	 * 
	 * @return
	 */
	String getUID();
	
	/**
	 * set platform dependent id
	 * 
	 * @param value
	 */
	void setUID( String value );

	/**
	 * 
	 * @return device identification
	 */
	public  String getDeviceId();

	/**
	 * set device identification
	 * 
	 * @param deviceId
	 */
	public  void setDeviceId(String deviceId);

	
	/**
	 * this declaration is required for AutoBean unmarshaling
	 * 
	 */
	Attributes getAttributes();
	
	/**
	 * this declaration is required for AutoBean marshaling
	 * 
	 */
	void setAttributes( Attributes value );

	/**
	 * associated user in tenant
	 * 
	 * @return
	 */
	TenantUser getUser();
	
	/**
	 * set associated user in tenant
	 * 
	 * @param user
	 */
	void setUser( TenantUser user );
	
	/**
	 * get account mail  
	 * 
	 * @return
	 */
	String getMail();
	
	/**
	 * set account mail  
	 * 
	 * @return
	 */
	void setMail( String mail );
	
	/**
	 * get mobile phone number
	 * 
	 * @return
	 */
	String getPhone();
	
	/**
	 * set Mobile phone number
	 * 
	 * @param number
	 */
	void setPhone( String number );
	
	
}